Conversation
This comment has been minimized.
This comment has been minimized.
919e450 to
8c8e243
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment was marked as outdated.
This comment was marked as outdated.
This comment has been minimized.
This comment has been minimized.
This comment was marked as resolved.
This comment was marked as resolved.
There was a problem hiding this comment.
Found one last issue
nit: could disable the swich option while the switching is in progress
1. Address Type Selection & Settings
Initial Setup
- Fresh wallet creation - verify default address type is Native SegWit
- Navigate to Settings → Advanced → Address Type Preference
- Verify all 4 address types are displayed with correct labels:
- Legacy (1x...)
- Nested SegWit (3x...)
- Native SegWit (bc1q...)
- Taproot (bc1p...)
Switching Address Types
- Switch from Native SegWit to Legacy - verify success toast
- Verify receive address changes to Legacy format (starts with "m" for regtest)
- Switch to Nested SegWit - verify address starts with "2" for regtest
- Switch to Taproot - verify address starts with "bcrt1p" for regtest
- Switch back to Native SegWit - verify address starts with "bcrt1q" for regtest
Monitored Address Types (Dev Settings)
- Enable dev settings and verify "Monitored Address Types" section appears
- Enable monitoring for Legacy while Native SegWit is selected
- Enable monitoring for Taproot while Native SegWit is selected
- Verify cannot disable currently selected address type
- Verify cannot disable last native witness type (Native SegWit or Taproot)
- Add funds to a monitored type, then try to disable it - should fail
2. Receive Functionality
Address QR Codes
- Generate QR code for each address type
- Verify QR code contains correct address format
- Test scanning generated QR codes
Multiple Address Types (Mixed Wallet)
- Set address type to Native SegWit, receive funds
- Switch to Legacy, receive funds to new Legacy address
- Switch to Taproot, receive funds to new Taproot address
- Verify all balances are correctly aggregated in wallet total
- Verify activity list shows all transactions
3. Send Functionality
Single Address Type Sends
- Enable manual coin selection
- Add tags to identify the address type
- Legacy only: Send from wallet selecting only Legacy UTXOs
- Verify fee estimation
- Complete send and verify transaction
- Nested SegWit only: Send from wallet selecting only Nested SegWit UTXOs
- Native SegWit only: Send from wallet selecting only Native SegWit UTXOs
- Taproot only: Send from wallet selecting only Taproot UTXOs
4. Lightning Channel Operations
Channel Opening
- Legacy: Set address type to Legacy, open channel
- Verify funding transaction uses Legacy inputs if available
- Nested SegWit: Set to Nested SegWit, open channel
- Verify funding transaction format
- Native SegWit: Set to Native SegWit, open channel
- Taproot: Set to Taproot, open channel
- Mixed UTXOs: Open channel with inputs from multiple address types
5. Fee Bumping (RBF - Replace-By-Fee)
RBF Single Address Type
- Send replaceable transaction from Legacy wallet, bump fee
- Send replaceable transaction from Nested SegWit wallet, bump fee
- Send replaceable transaction from Native SegWit wallet, bump fee
- Send replaceable transaction from Taproot wallet, bump fee
RBF Mixed Address Types
- Send transaction with all 4 address types, bump fee
6. CPFP (Child-Pays-For-Parent)
CPFP Single Address Type
- Receive unconfirmed transaction to Legacy address, boost with CPFP
- Receive unconfirmed transaction to Nested SegWit, boost with CPFP
- Receive unconfirmed transaction to Native SegWit, boost with CPFP
- Receive unconfirmed transaction to Taproot, boost with CPFP
7. Wallet Restore & Migration
Fresh Restore
- Restore wallet with funds across all 4 address types
- Verify all funds are discovered and aggregated correctly
Migration from React Native App
- Verify address type migration handles properly (RN only allowed select taproot and native segwit)
- Check monitored types are correctly configured after migration
8. Balance & Display
Balance Calculation
- Verify total balance correctly sums all address types
- Verify spendable balance is accurate with mixed UTXOs
- Check balance per address type (dev settings)
Activity List
- Verify transactions from all address types appear in activity list
- Verify correct icons/labels for each address type transaction
- Test filtering/sorting with mixed address type transactions
9. Edge Cases & Error Handling
Settings Validations
- Try to disable all monitored types - should fail
- Try to disable currently selected type - should fail
- Try to disable last native witness type - should fail
10. Backup & Security
Backup Flows
- Create backup after switching address types
- ❌ Restore from backup - verify address type preferences are preserved - #431 (comment)
- Verify seed phrase backup includes all address types
|
@jvsena42 fixed the issues with restore and switch not disabled |
Those we're just comments, not change requests. Not sure why GH requires them to be resolved. Approving now. |
|
Could be the same/similar issue as here (synonymdev/bitkit-android#788 (comment)) but manifesting a bit differently. When trying to transfer max (in case when I have 25k on each address) sometimes I am not able to swipe to transfer (the bitkit_logs_2026-02-26_14-52-13.zip Screen.Recording.2026-02-26.at.15.47.05.mov |
|
Encountered the issue again today (on revision d0cd7b6). This time the spinner was spinning inifinitely after "dragging to transfer". bitkit_logs_2026-02-27_12-57-14.zip
|
|
Similarly to synonymdev/bitkit-android#788 (comment)
|
|
Makes sense though since you cannot RBF without having sufficient change or extra funds, so looks like correct behavior no? |
|
Similar as in Android (synonymdev/bitkit-android#788 (comment)), however here the legacy balance is not included when setting up external channel and trying to send max, however I guess the issue may be the fees?
bitkit_logs_2026-03-02_13-25-07.zip Screen.Recording.2026-03-02.at.14.23.04.mov |
|
@piotr-iohk updated |


This PR adds support for multiple Bitcoin address types in the iOS app, allowing users to select and monitor different address formats. Users can select their preferred address type from: Legacy (P2PKH), Nested SegWit (P2SH-P2WPKH), Native SegWit (P2WPKH), and Taproot (P2TR).
This requires extensive testing across all functionalities, send, receive, channel open, channel close (funds should always go to native segwit address except when selected address when channel opened was Taproot, in which case it should be a Taproot address), cpfp, rbf. All should be checked for each address type, and for multiple address types combined (ie. send with utxos of different address types, open channel with inputs of different address types, boost txs with inputs of different address types, etc.)